// 保存注册通知
let notices=[]
// 注册到通知中心
/**
 *
 * @param {String} name 通知名称
 * @param {Function} selector 通知对应要执行的函数，发生相应事件就执行
 * @param {object} observer 观察者，一般是page或component
 */
function add(name,selector,observer) {
  let notice={
      name,
      selector,
      observer
  }
  notices.push(notice)
}

/**
 * 移除通知,当对象观察者销毁时调用
 * @param {String} name 通知名称
 * @param {object} observer 注册的观察者
 */
function remove(name,observer){
    for (let i = 0; i < notices.length; i++) {
        let noti = notices[i];
        if (noti.name==name && noti.observer==observer){
            notices.splice(i,1)
            return
        }
    }
}

/**
 * 发送通知 被观察者observable/subject发送通知
 * @param {String} name 注册的通知名称
 * @param info {object} 发送的参数
 */
function post(name,info) {
    for (let i = 0; i < notices.length; i++) {
        let noti = notices[i];
        if (noti.name==name ){
            noti.selector(info)
        }
    }
}

module.exports = {
    add,
    remove,
    post
}